
/**********************
* 문자열을 Byte길이로 잘라옴.
*  ex : cutStringToByte(form1.name.value, bytelength)
* @param : 바이트 길이로 자를 문자열
* @return : 바이트 길이
* @see
************************/
function cmnCutStringToByte(message,cutByte)
{
    var sumLength = 0;
    var resultStr = "";
    for(var i= 0;i < message.length; i++)
    {
        if( escape(message.charAt(i)).length > 3 ) { strLength = 2; }
            else if (message.charAt(i) == '<' || message.charAt(i) == '>') { strLength = 4; }
            else { strLength = 1 ; }
        if ( cutByte < (sumLength + strLength) ) { break; }
            sumLength += strLength;
            resultStr += message.charAt(i);
    }
    return resultStr;
}


/**********************
* <pre>
* minbyte 체크 함수
* </pre>
* @param : elem - 체크 대상 element , length_limit - 체크할 minbyte길이
* @return : boolean
* @see
************************/
function cmnCheckMinbyte(elem , length_limit) {
    var length = calculate_msglen(elem);
    var kor_cnt = Math.floor(length_limit/2);
    if (length < length_limit) {
        return false;
    }
    return true;
};


/**********************
* <pre>
* 한글 2글자 영문 1글자로 길이 측정하여 문자열의 byte 길이를 리턴한다
* </pre>
* @param : message - 체크할 data
* @return : byte 길이 
* @see
************************/
function cmnCalculateMsglen(message) {
    var nbytes = 0;
    var messages = message.split('');
    
    $(messages).each(function(n) {
    	var ch = messages[n];
        if(escape(ch).length > 4) {
            nbytes += 2;
        } else if (ch == '\n') {
            if (messages[n-1] != '\r') {
                nbytes += 1;
            }
        } else if (ch == '<' || ch == '>') {
            nbytes += 4;
        } else {
            nbytes += 1;
        }
    });
    return nbytes;
};



/**********************
* <pre>
* 해당 element 문자를 전각문자로 변경
* </pre>
* @param : elem - 전각 문자로 변환할 값이 있는 element
* @see
************************/
function cmnValidtype2Bytechar(elem) {
	var x_string = $(elem).val().split('');
	var x_2byteString = ""; /* 컨버트된 문자 */
    $(x_string).each( function(n) {
    		var c = x_string[n].charCodeAt(0);
    		/* 전각으로 변환될수 있는 문자의 범위 */
			if(32 <= c && c <= 126) {
				/* 스페이스인경우 ascii 코드 32 */
				if(c == 32) { 
					/* 아래와 같이 변환시 깨짐. */
					/* x_2byteString = x_2byteString + unescape("%uFFFC"); */
					x_2byteString = x_2byteString + unescape("%u"+cmnDec2Hex(12288));
	            } else {
	                x_2byteString = x_2byteString + unescape("%u"+cmnDec2Hex(c+65248));
	            }
	        }else{
	            x_2byteString = x_2byteString + x_string[n];
	        }
    	}
    );
    $(elem).val(x_2byteString);
};


/**********************
* <pre>
* 해당 element 문자를 HEX 문자로 변경
* </pre>
* @param : desc 변환할 문자
* @return : HEX로 변환된 dec
* @see
************************/
function cmnDec2Hex(dec) {
    return dec.toString(16);
};

/**********************
* <pre>
* form initialize
* </pre>
* @param : form - 체크할 form
* @see
************************/
function cmnFormInitialize(form) {
	
	if(!$(form).attr("autocomplete")) $(form).attr("autocomplete" ,"off");
	form.spiderSubmit = cmnSpidersubmit;
	form.submitstat = "false";
};


/**********************
* <pre>
* spiderSubmit 정의
* </pre>
* @see
************************/
function cmnSpidersubmit(isXecureSubmit) {
	if(this.submitstat != "false") {
		i18nExtAlert(_fU_i18n_FRA00012);        /* 이미 submit 되었습니다. */
		return;
	}else {
        this.submitstat = "validating";
        /* 기본 밸리데이션 체크 함수 호출 */
        if(cmnSpidersubmitValidation(this)) {
            this.submitstat = "true";
            var tokenValue = "";

            if(_fU_tokenValue != ""){
                tokenValue = _fU_tokenValue;
            }

            if(tokenValue != "") {
                /* var spiderSubmitState = document.createElement('<INPUT TYPE="HIDDEN" NAME="+_fU_tokenKey+" VALUE="'+tokenValue+'">'); */
                var spiderSubmitState = document.createElement('INPUT');
                spiderSubmitState.setAttribute('TYPE','HIDDEN',0);
                spiderSubmitState.setAttribute('NAME',_fU_tokenKey,0);
                spiderSubmitState.setAttribute('VALUE',tokenValue,0);

                this.appendChild(spiderSubmitState);
            }	

            if(isXecureSubmit == false) {
                this.submit();
            }else{
                XecureSubmit(this);
                //this.submit();
            }
        }else {
            this.submitstat = "false";
            return;
        }
    }
};


/**********************
* <pre>
* spiderSubmit 시 validation 체크
* </pre>
* @param : elem - 체크할 form
* @see
************************/
function cmnSpidersubmitValidation(elem) {
	var childInputEl = "form[name=" + elem.name + "] input";
	var childSelectEl = "form[name=" + elem.name + "] select";
	
	var returnValue = true;

	return returnValue;
};

/**********************
* submit 상태를 알려주는 submitstat 값을 false로 바꿔주는 함수.
* @param :
* @return :
* @see
************************/
function submitStateFalse(frm) {
    frm.submitstat = "false";
}

$(function() {
	/* initialize Html page */
	//cmnInitHtml();
	/* form에 spiderSubmit, submitstat 설정 */
	$("form").bind("load", function(event) {
			cmnFormInitialize(this);
		}
	).load();
});
